package com.pap.obj.vo.response;

import java.io.Serializable;

import com.pap.obj.vo.page.Page;
import com.pap.obj.vo.response.errorcode.ErrorCodeEnum;

/**
 * 	返回值VO类
 * @author alexgaoyh
 *
 */
public class ResponseVO<E extends Serializable> implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String code;
	
	private Object data;
	
	private Object list;
	
	private Page page;
	
	/**
	 * 
	 * 功能：操作成功<br/>
	 *
	 * @author alexgaoyh
	 * @version 2017年11月16日 上午9:25:49 <br/>
	 */
	public static ResponseVO successdata(Object returnData){
		ResponseVO params=new ResponseVO(ErrorCodeEnum.SUCCESS.getKey(),returnData,
				null, null);
		return params;	
	}
	
	/**
	 * 
	 * 功能：操作异常<br/>
	 *
	 * @author alexgaoyh
	 * @version 2017年11月25日 下午3:59:16 <br/>
	 */
	public static ResponseVO exceptiondata(Object returnData){
		ResponseVO params=new ResponseVO(ErrorCodeEnum.EXCEPTION.getKey(),returnData,
				null, null);
		return params;	
	}
	
	/**
	 * 
	 * 功能：操作成功<br/>
	 *
	 * @author alexgaoyh
	 * @version 2017年11月16日 上午9:25:49 <br/>
	 */
	public static ResponseVO successdatawithdatas(Object returnData, Object returnDatas, Page returnPage){
		ResponseVO params=new ResponseVO(ErrorCodeEnum.SUCCESS.getKey(),
				returnData, returnDatas,  returnPage);
		return params;	
	}
	
	/**
	 * 
	 * 功能：操作成功<br/>
	 *
	 * @author alexgaoyh
	 * @version 2017年11月16日 上午9:25:49 <br/>
	 */
	public static ResponseVO successdatas(Object returnDatas, Page returnPage){
		ResponseVO params=new ResponseVO(ErrorCodeEnum.SUCCESS.getKey(),
				ErrorCodeEnum.SUCCESS.getValue(), returnDatas,  returnPage);
		return params;	
	}
	
	/**
	 * 
	 * 功能：参数校验失败，并返回校验失败的参数信息<br/>
	 *
	 * @author alexgaoyh
	 * @version 2017年11月16日 上午9:27:16 <br/>
	 */
	public static ResponseVO validfail(String returnDesc) {
		ResponseVO params=new ResponseVO(ErrorCodeEnum.VALIDFAIL.getKey(), returnDesc,
				null, null);
		return params;	
	}
	
	public ResponseVO() {
		
	}
	
	public ResponseVO(String returnCode, Object returnData, Object returnDatas, Page returnPage) {
		this.code = returnCode;
		this.data = returnData;
		this.list = returnDatas;
		this.page = returnPage;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public Object getList() {
		return list;
	}

	public void setList(Object list) {
		this.list = list;
	}

	public Page getPage() {
		return page;
	}

	public void setPage(Page page) {
		this.page = page;
	}

	@Override
	public String toString() {
		return "ResponseVO [code=" + code + ", data=" + data + ", list=" + list + ", page=" + page + ", toString()="
				+ super.toString() + "]";
	}
	
}
